<?php

namespace App\Exports;

use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithColumnWidths;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Events\AfterSheet;

class TakeOrderExport implements FromCollection, WithHeadings, WithColumnWidths, WithEvents
{
    protected $data;

    public function __construct(Collection $data)
    {
        $this->data = $data;
    }

    public function collection()
    {
        return $this->data;
    }

    public function headings(): array
    {
        return [
            '客户名称',
            '提单号',
            '提单状态',
            '航线',
            '起飞时间',
            '航班号',
            '入仓单数',
            '大包件数',
            '目的地',
            '体积(m³)',
            '体积重',
            '入库重量KG',
            '结算实重KG',
            '是否收泡',
            '计费重',
        ];
    }

    public function columnWidths(): array
    {
        // 设置每列的宽度
        return [
            'A' => 20, // 客户名称
            'B' => 20, // 客户编码
            'C' => 15, // 客户类型
            'D' => 20, // 提单号
            'E' => 15, // 提单状态
            'F' => 20, // 客户可见提单
            'G' => 20, // 航线
            'H' => 20, // 起飞时间
            'I' => 20, // 配舱时间
            'J' => 15, // 航班号
            'K' => 12, // 入仓单数
            'L' => 12, // 分单数
            'M' => 12, // 大包件数
            'N' => 20, // 目的地国家
            'O' => 15, // 体积
            'P' => 15, // 体积重
            'Q' => 15, // 入库重量
            'R' => 15, // 结算实重
            'S' => 12, // 是否收泡
            'T' => 15, // 计费重
            'U' => 15, // 资料完善人
            'V' => 15, // 计费重录入人
        ];
    }

    public function registerEvents(): array
    {
        return [
            AfterSheet::class => function(AfterSheet $event) {
                $event->sheet->getDelegate()->freezePane('A2');
            },
        ];
    }
}